package juego.movimientos;


import juego.cosas.Entidad;
import juego.main.MainWin;
import juego.niveles.generator.Nivel;
import juego.roles.Mario;

/**
 * Esta clase modela el movimiento saltar.
 * @author Latini Macarena
 * @author Rosas Tifany.
 *
 */
public class MovimientoSaltar extends Thread {
	
	protected Mario personaje;
	protected MainWin main;
	protected Nivel nivel;
	
	/**
	 * Constructor: Inicializa las variables de instancia.
	 * @param p Personaje Mario.
	 * @param m MainWin para el manejo de hilos.
	 * @param n Nivel al cual pertenece.
	 */
	public MovimientoSaltar( Mario p, MainWin m , Nivel n)
	{
		this.personaje = p;
		main=m;
		nivel=n;
	}
	
	//Determina si puede saltar o no.
	//No permite saltar si ya esta saltando. 
	private boolean consistencia(){
		int y = this.personaje.getGrafico().getLocation().y;
		int x = this.personaje.getGrafico().getLocation().x;
		if( y == 352 ){
			return true;
		} else {
			Entidad ent = personaje.getGravedad().buscarEntidad(personaje);
			if (ent != null) {
				return true;
			}else{
				return false;
			}			
		}
	}
	
	/**
	 * Metodo que se ejecuta continuamente.
	 * Mueve a Mario logrando el efecto de un salto.
	 */
	public void run()
	{	
		if(consistencia())
		{
		main.setControlSalto(true);
		for( int i = 0; i < 5; i++ )
		{
			try
			{
				this.personaje.getGrafico().setLocation( this.personaje.getGrafico().getLocation().x,
						this.personaje.getGrafico().getLocation().y -16 );
				this.personaje.setPosicion(this.personaje.getGrafico().getLocation().x,
						this.personaje.getGrafico().getLocation().y-16 );
				Thread.sleep(50);
			} catch (Exception e)
			{}
		}
		main.setControlSalto(false);
		}
	}	
}
